import useUserStore from './store/modules/user';
import pinia from './store';
import { REMOVE_TOKEN } from '@/utils/token';

// 路由鉴权：鉴权，项目当中权限设置（某一个路由什么条件下可以访问、什么条件下不能访问）
import router from '@/router';
import nprogress from 'nprogress'

import "nprogress/nprogress.css"
nprogress.configure({ showSpinner: false })

// ?
let userStore = useUserStore(pinia)

// 全局前置路由守卫
router.beforeEach(async (to: any, from: any, next: any) => {
    console.log('全局前置路由守卫，来自：', from)
    console.log('即将前往：', to.fullPath)
    nprogress.start();
    let token = userStore.token;
    let username = userStore.username;
    console.log('token', token)
    if (token) {
        // 用户已登录
        // 前往登录页面
        console.log(username, 111111111)
        if (to.path == '/login') {
            next('/')
        } else {
            // 前往其他页面
            if (username != '未登录') {
                next()
                // next({ path: '/login', query: { redirect: to.path } });
            } else {
                // 如果没有用户信息，在收尾这里发请求获取到了用户信息再放行
                try {
                    // 获取用户信息
                    await userStore.userInfo();
                    console.log('获取用户信息', username)
                    next()
                } catch (error) {
                    // token过期：
                    console.log('登录失败：', error)
                    // 清除本地存储的token
                    REMOVE_TOKEN();
                    // 清除pinia仓库的token
                    userStore.token = '';
                    // 重定路由到登录页面
                    next({ path: '/login', query: { redirect: to.path } });
                }
            }
        }
    } else {
        // 用户未登录
        if (to.path == '/login') {
            next();
        } else {
            next({ path: '/login', query: { redirect: to.path } });
        }
    }
})

// 全局后置路由守卫
router.afterEach((to: any, from: any, next: any) => {
    console.log('全局后置路由守卫，要去：', to)
    nprogress.done();
})
